class LRUCache {
  constructor(size) {
    this.size = size
    this.cache = new Map()
  }

  get(key) {
    const hasKey = this.cache.has(key)
    if (hasKey) {
      const val = this.cache.get(key)
      this.cache.delete(key)
      this.cache.set(key, val)
      return val
    } else {
      return -1
    }
  }

  put(key, val) {
    const hasKey = this.cache.has(key)
    if (hasKey) {
      this.cache.delete(key)
    }
    this.cache.set(key, val)
    if (this.cache.size > this.size) {
      this.cache.delete(this.cache.keys().next().value)
    }
  }

}


let cache = new LRUCache(2)
cache.put(1, 1)
console.log(cache.cache);
cache.put(2, 2)
console.log(cache.cache);
cache.get(1)
console.log(cache.cache);
cache.put(3, 3)
console.log(cache.cache);
cache.get(2)
console.log(cache.cache);
cache.put(4, 4)
console.log(cache.cache);
cache.get(1)
console.log(cache.cache);
cache.get(3)
console.log(cache.cache);
cache.get(4)
console.log(cache.cache);



